package cn.kgc.mvc.controller;

import cn.kgc.mvc.dto.ParamDTO;
import cn.kgc.mvc.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author: mosin
 * @version: v1.0  2022/7/6
 */
@Controller
@RequestMapping("param")
public class ParamController {

    /**
     *localhost:8080/mvc/param/login?username=lisi&password=123
     *
     * 注意： 使用mvc的方式实现参数的接收  要保证形参的名字和请求路径中的key保持一致  否则 获取不到数据
     *
     *   @RequestParam(value = "uname",defaultValue = "tom",required = false)  获取参数时 只会根据注解中指定的名字匹配
     *  value:  指定获取参数的key
     *  defaultValue： 设置参数的默认值
     *  required = false  默认情况下 required = true 添加了该注解的参数必须要传值 ，改变required = false 传参的时候可以没有对应参数传递
     *
     * @param username
     * @param password
     * @return
     */
    @RequestMapping("login")
    public String  login(@RequestParam(value = "uname",required = false) String username, String password){

        System.out.println(username+":"+password);
        return "index";
    }

    /**
     * 八种基本类型  int  参数必须要有相对应的值进行传递   int  number = null
     *
     * 八种基本类型 接收参数时 建议使用对应的包装类型 避免类型转换异常
     *
     * @param id
     * @return
     */
    @RequestMapping("delete")
    public String  delete(Integer id){
        System.out.println("前台传递的id："+id);
        return "index";
    }

    /**
     * 使用类类型接收参数
     * key  对应 对象中的属性名  set方法
     * @return
     */
    @RequestMapping("register")
    public String  register(User user){
        System.out.println("user = " + user);

        //TODO 调用业务逻辑

        return "index";
    }

    /**
     * key  ids 数据类型
     * @param
     * @return
     */

    //@RequestMapping("deleteMore")
    //public String  deleteMore(Integer[] ids){
    //    System.out.println(Arrays.toString(ids));
    //    //TODO 调用业务逻辑
    //    return "index";
    //}


    /**
     * 集合类型 需要封装到实体类中进行参数的接收
     * @param paramDTO
     * @return
     */
    @RequestMapping("deleteMore")
    public String  deleteMore(ParamDTO  paramDTO){
        System.out.println(paramDTO.getIds());
        //TODO 调用业务逻辑
        return "index";
    }





}
